//
//  CZEmoticonPackageModel.swift
//  61.新工程表情键盘
//
//  Created by apple on 16/3/7.
//  Copyright © 2016年 itcast. All rights reserved.
//

import UIKit

/*
    Emoticons.bundle: 有3个文件夹一个文件夹就是一个表情包,每个文件夹里面都 有info.plist
        1.com.apple.emoji
        2.com.sina.default
        3.com.sina.lxh


    每个文件夹里面的info.plist:
        1.id                文件夹名称
        2.group_name_cn     表情包的名称
        3.emoticons         表情数组,所有的表情信息

    emoticons里面的每个表情信息都是一个字典
        1.chs [好爱哦]  表情名称用于网络传输
        2.png lxh_xiaohaha.png 表情的图片名称
        3.code emoji对应的16进制字符串
*/

/// 一页有20个表情
let CZEmoticonNumberOfPage = 20

/// 表情包模型
class CZEmoticonPackageModel: NSObject {
    // 表情包文件夹名称
    var id: String
    
    // 表情包的名称
    var group_name_cn: String
    
    // 表情数组里面存放的是表情模型
    var emoticons: [CZEmoticonModel]
    
    // 将表情包里面的这个表情数组(102),拆分成每页20表情模型 102 -> 6页
    lazy var pageEmoticons: [[CZEmoticonModel]] = {
        var page = [[CZEmoticonModel]]()
        
        // 计算有多少页: 前提CZEmoticonNumberOfPage 必须是Int类型
        let pageCount = (self.emoticons.count + CZEmoticonNumberOfPage - 1) / CZEmoticonNumberOfPage
        
        // 遍历
        for i in 0..<pageCount {
            // 将 emoticons 拆分成多页
            let location = i * CZEmoticonNumberOfPage
            var length = CZEmoticonNumberOfPage
            
            // 需要判断最后一页.比要让range超出范围
            if location + length > self.emoticons.count {
                length = self.emoticons.count - location
            }
            
            // 截取对应也得表情模型数组
            let subEmoitcons = (self.emoticons as NSArray).subarrayWithRange(NSRange(location: location, length: length)) as! [CZEmoticonModel]
            
            // 将截取的每页表情数组存放到page
            page.append(subEmoitcons)
        }
        
        // pageCount == 0, 只有 最近 会出现这种情况,没有数据
        if pageCount == 0 {
            // 最近 这组 表情数组 最近只有一页表情数据
            let pageEmoticon = [CZEmoticonModel]()  // 到时候用于保存最近这页的表情模型数组最多只有20个
            page.append(pageEmoticon)
        }
        
        return page
    }()
    
    init(id: String, group_name_cn: String, emoticons: [CZEmoticonModel]) {
        self.id = id
        self.group_name_cn = group_name_cn
        self.emoticons = emoticons
        super.init()
    }
    
    override var description: String {
        return "\n\n\t 表情包模型: id: \(id), group_name_cn: \(group_name_cn), emoticons: \(emoticons))"
    }
}
